混合模型是一種結合多種不同深度學習架構或組合了深度學習和傳統機器學習方法的模型。在醫學信號辨識應用中,混合模型可以結合不同的模型組件,以更好地處理複雜的信號數據,例如心電圖(ECG)或腦電圖(EEG)。不同模型組合效果都會有不同的作用,例如辨識率提高或是計算效能降低等功用。
以下是一個範例程式,使用混合模型來辨識心電圖(ECG)信號中的心臟異常。這個混合模型結合了卷積神經網絡(CNN)和長短時記憶網絡(LSTM)來處理ECG信號。
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense, Flatten
from sklearn.model_selection import train_test_split
# 創建一個範例的ECG信號數據集
# 假設data是ECG信號數據,labels是對應的心臟異常標籤(0表示正常,1表示異常)
data = np.random.rand(1000, 500, 1) # 1000個ECG信號,每個信號500個時間點
labels = np.random.randint(2, size=1000)
# 將數據集分為訓練集和測試集
x_train, x_test, y_train, y_test = train_test_split(data, labels, test_size=0.2, random_state=42)
# 創建混合模型
model = Sequential()
model.add(Conv1D(32, 5, activation='relu', input_shape=(500, 1)))
model.add(MaxPooling1D(2))
model.add(Conv1D(64, 5, activation='relu'))
model.add(MaxPooling1D(2))
model.add(LSTM(64, return_sequences=True))
model.add(Flatten())
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 編譯模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
# 訓練模型
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_test, y_test))
# 評估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f'Test accuracy: {test_acc}')
這個範例第一步先創建一個虛擬的ECG信號數據集,然後將數據集分為訓練集和測試集。接著,創建了一個混合模型,其中包括了卷積層、池化層、LSTM層和全連接層。這個模型可以學習從ECG信號中檢測心臟異常的模式。最後,我們訓練模型並評估其性能。